The present invention relates to methods for testing the operation of web-based and other transactional servers.
A variety of commercially-available software tools exist for assisting companies in testing the performance and functionality of their transactional servers and associated applications prior to deployment. (The term xe2x80x9ctransactional serverxe2x80x9d refers generally to a multi-user computer system, such as a web site, that provides interactive services to users over a computer network.) Examples of such tools include the LoadRunner(copyright), WinRunner(copyright) and Astra QuickTest(copyright) products of Mercury Interactive Corporation, the assignee of the present application.
Using these products, a user can record or otherwise create a test script which specifies a sequence of user interactions with the transactional server. The user may also optionally specify certain expected responses from the transactional server, which may be added to the test script as verification points. For example, the user may record a session with a web-based travel reservation system during which the user searches for a particular flight, and may then define one or more verification points to check for an expected flight number, departure time or ticket price.
Test scripts generated through this process are xe2x80x9cplayedxe2x80x9d or xe2x80x9cexecutedxe2x80x9d to simulate the actions of usersxe2x80x94typically prior to deployment of the component being tested. During this process, the testing tool monitors the performance of the transactional server, including determining the pass/fail status of any verification points. Multiple test scripts may be replayed concurrently to simulate the load of a large number of users. Using an automation interface of the LoadRunner product, it is possible to dispatch test scripts to remote computers for execution.
The results of the test are typically communicated to the user through a series of reports that are accessible through the user interface of the testing tool. The reports may contain, for example, graphs or charts of the observed response times for various types of transactions. Performance problems discovered through the testing process may be corrected by programmers or system administrators prior to deployment.
One type of test that is commonly performed prior to the deployment of a new or modified transactional server is a load test. A load test generally involves simulating the actions of relatively large numbers of users to determine how the transactional server will perform under heavy loads. One purpose of such a test is to determine the number of concurrent users the system can handle before performance becomes unacceptablexe2x80x94sometimes referred to as the xe2x80x9cbreaking point.xe2x80x9d The breaking point can be determined, for example, by scaling or ramping up the number of simulated users over time while monitoring server response times. One testing tool that provides functionality for performing load tests is the above-mentioned LoadRunner product of Mercury Interactive.
Some companies also offer hosted services for monitoring the post-deployment operation of web sites. Mercury Interactive, for example, provides a service known as Topaz ActiveWatch(trademark) which monitors a deployed web site from various points of presence on the Internet on a 24-hour or other basis. The response times, transaction results, and other data collected through the monitoring processes are aggregated within a database for customer viewing, and are used to generate real-time notification messages when problems occur. These types of services generally do not provide load testing capabilities.
One problem companies commonly encounter is a need to load test a web site or other Internet-based system on very short notice. This problem commonly arises when a company is about to deploy its web site, or a new web site application, for the first time. For example, a company may wish to implement and launch its new e-commerce service quickly in order to be the first to market. Other situations in which this problem commonly arises include the following: (1) when the company expects a sudden increase in traffic as the result of promotions, new product offerings, a newsworthy event, or some other type of event, and (2) when the company upgrades or modifies an existing software component of the transactional server.
In these situations, a company may not have the time or other resources needed to set up, run and analyze the results of a load test prior to launch. For example, the company may not have the hardware resources needed to generate a sufficiently large load, or may not have the technical expertise needed to develop, run and analyze the load tests. The above-mentioned tools and services do not provide an adequate solution to this problem.
The present invention overcomes the above and other problems by providing a hosted service for load testing a web site or other transactional server over the Internet or other public network. The service allows the owner or operator of a transactional server (xe2x80x9ccustomerxe2x80x9d) to outsource the task of load testing a transactional server to a load testing service provider. The service provider tests the transactional server remotely from a server farm, based on information remotely collected from the customer, without the need to visit the customer""s facility.
To use the service, the customer initially registers with the service providerxe2x80x94preferably through a web site of the service provider. As part of the registration process, the customer provides the information needed by the service provider to define load tests and generate associated scripts. This information may include, for example, an overview of the system architecture, anticipated traffic levels, and descriptions of the transactions to be tested.
To enable the service provider to access the transactional server over the Internet, the customer preferably sets up a substantially replicated version of the transactional server using a staging server. The staged transactional server may be placed at an Internet address that is not generally known to ordinary users (e.g., www.stage.abcstore.com), and/or may be placed behind a firewall to limit access. The use of a staging server allows the transactional server to be tested from a remote location prior to actual deployment, while allowing the customer to continue development using the non-staged version of the transactional server. To assist the customer in setting up the staged transactional server, the service provider""s web site may include staging server software in downloadable form.
Using the transactional server and the information provided by the customer, the service provider uses conventional tools to remotely generate and run load tests of the transactional server. The load tests are preferably executed from a server farm that provides sufficient processing power to test multiple high-volume web sites concurrently. The results of the load test, including recommendations for reducing bottlenecks and other performance problems, may be communicated to the customer through the service provider""s web site, by telephone, or by another communications method.
In one embodiment, the service provider makes a collaboration tool available that allows the customer, or a consultant of the customer, to remotely participate in the process of generating and running load tests.